home *** CD-ROM | disk | FTP | other *** search
/ Softdisk G-S 121 / SGDS 121.2mg / SDGS.121 / SDC121 / C / GRCK.PRG (.txt) < prev    next >
Encoding:
Applesoft BASIC Source Code  |  1991-10-31  |  12.1 KB  |  377 lines  |  [FC] Applesoft BASIC Program (0x0801)

  1. 0  ROT= 0: SPEED= 255: REM <CTRL-0x0d>(C)1988
  2. 100  PRINT  CHR$(21): IF  PEEK(176) >63  THEN  PRINT "TOO BIG. HGR2 WILL KILL LAST LINES.": STOP 
  3. 110  HGR2 : CALL 2304: POKE 48688, PEEK(0): POKE 48689, PEEK(1): LOMEM: 28160
  4. 130  CALL 2281: REM GSCOLR
  5. 140  POKE 104,14: GOTO 1
  6. 150  CALL 2281: REM GSCOLR
  7. 160  PRINT  CHR$(4)"BYE"d"BYE"d SPEED= <CTRL-0x08> DEL h`8 <CTRL-0x1f><UNKNOWN TOKEN> GOSUB <CTRL-0x02> HGR2 <CTRL-0x01>` IF ^ TAB(  IF ) TAB( <CTRL-0x09>  PLOT ) TAB( `8 <CTRL-0x1f><UNKNOWN TOKEN> GOSUB <CTRL-0x02> HGR2 <CTRL-0x01>` IF _ TAB(  IF ) TAB( ) SIN PLOT ) TAB( `"
  8. 36286  <<CTRL-0x09> IF 1 GET  PLOT  SGN<CTRL-0x09> SPEED= 3 DEL 
  9. 389  SPEED= 
  10. 20653  TAB(  IF R TAB(  IF W TAB(  ONERR  ASC -@ = <CTRL-0x04> IF U TAB( ` IF T TAB(  SPEED=   DEL  ASC`) PLOT  PLOT <CTRL-0x09> J<UNKNOWN TOKEN> ONERR <UNKNOWN TOKEN>H ONERR  STR$) END  DEL <UNKNOWN TOKEN> IF  PLOT <CTRL-0x09> -  HGR2 u ONERR %  TO <UNKNOWN TOKEN> DEL & ONERR )8 RIGHT$<CTRL-0x04><CTRL-0x18>e ASC DEL '<CTRL-0x18> ONERR  e$e& DEL & SPEED= 
  11. 3593  PLOT <CTRL-0x09>. HLIN <CTRL-0x09><CTRL-0x0e> PLOT <CTRL-0x09>. HLIN <CTRL-0x09><CTRL-0x0e> PLOT <CTRL-0x09>. HLIN <CTRL-0x09> ONERR <UNKNOWN TOKEN>)<CTRL-0x0f>i<CTRL-0x09>m HLIN <CTRL-0x09> PLOT  HLIN <CTRL-0x09> VTAB 
  12. 3517 <CTRL-0x0a>H ONERR 2 -? = <CTRL-0x04>hIHh PLOT <UNKNOWN TOKEN><CTRL-0x09> LOMEM: <UNKNOWN TOKEN> TAB( <CTRL-0x03> HGR2 <CTRL-0x07> COLOR= 
  13. 64333 <CTRL-0x09> COLOR= 
  14. 9873 <CTRL-0x18> SPEED= <CTRL-0x04>e' DEL ' LEFT$ TAN<CTRL-0x08> =  > ?<UNKNOWN TOKEN> -<CTRL-0x0c><UNKNOWN TOKEN><CTRL-0x0f> -<CTRL-0x14><UNKNOWN TOKEN>"h DEL <UNKNOWN TOKEN> ?<UNKNOWN TOKEN><CTRL-0x09> END L<UNKNOWN TOKEN><UNKNOWN TOKEN> X<UNKNOWN TOKEN>8 ONERR # VAL" STORE  RESUME ! J<UNKNOWN TOKEN> GR  = <UNKNOWN TOKEN> X<UNKNOWN TOKEN>L +<CTRL-0x09> SPEED= 
  15. 8837  SPEED= ( DEL ! SPEED= <CTRL-0x18> DEL #L +<CTRL-0x09><CTRL-0x0c><CTRL-0x1e><CTRL-0x1e><CTRL-0x0c><CTRL-0x0c>
  16. 13878 <CTRL-0x1b>
  17. 13951 6<CTRL-0x0c>><CTRL-0x0f><CTRL-0x1e><<CTRL-0x1f><CTRL-0x0c>
  18. 3096 <CTRL-0x06>33
  19. 28187 ;;n
  20. 1542 <CTRL-0x06><CTRL-0x0c><CTRL-0x18>
  21. 6168 <CTRL-0x18><CTRL-0x0c><CTRL-0x06>
  22. 13086 <CTRL-0x1e>?<CTRL-0x0c>
  23. 16140 <CTRL-0x0c><CTRL-0x0c>
  24. 12288 0<CTRL-0x18><CTRL-0x0c><CTRL-0x06><CTRL-0x03><CTRL-0x03>
  25. 16187 73<CTRL-0x1e>
  26. 3084 <CTRL-0x0c><CTRL-0x0c><CTRL-0x1e>
  27. 7216 <CTRL-0x06><CTRL-0x03>?
  28. 7216 03<CTRL-0x1e>
  29. 16179 000
  30. 12319 03<CTRL-0x1e>
  31. 7942 33<CTRL-0x1e>
  32. 6192 <CTRL-0x0c><CTRL-0x0c><CTRL-0x0c>
  33. 7731 33<CTRL-0x1e>
  34. 15923 <CTRL-0x18><CTRL-0x0c><CTRL-0x06><CTRL-0x0c><CTRL-0x0c>
  35. 3072 <CTRL-0x0c><CTRL-0x06><CTRL-0x18><CTRL-0x0c><CTRL-0x06><CTRL-0x03><CTRL-0x06><CTRL-0x0c><CTRL-0x18>>
  36. 0 <CTRL-0x06><CTRL-0x0c><CTRL-0x18>0<CTRL-0x18><CTRL-0x0c><CTRL-0x06>
  37. 6192 <CTRL-0x0c>
  38. 0 <CTRL-0x1c>>><CTRL-0x1c>
  39. 13086 3?33
  40. 7987 33<CTRL-0x1f>
  41. 771 <CTRL-0x03>3<CTRL-0x1e>
  42. 13107 33<CTRL-0x1f>
  43. 3843 <CTRL-0x03><CTRL-0x03>?
  44. 3843 <CTRL-0x03><CTRL-0x03><CTRL-0x03>
  45. 771 33>
  46. 16179 333
  47. 3084 <CTRL-0x0c><CTRL-0x0c><CTRL-0x1e>
  48. 12336 03<CTRL-0x1e>
  49. 3867 <CTRL-0x1b>33
  50. 771 <CTRL-0x03><CTRL-0x03>?
  51. 13119 333
  52. 15167 333
  53. 13107 33<CTRL-0x1e>
  54. 7987 <CTRL-0x03><CTRL-0x03><CTRL-0x03>
  55. 13107 3<CTRL-0x1b>6
  56. 7987 333
  57. 7683 03<CTRL-0x1e>
  58. 3084 <CTRL-0x0c><CTRL-0x0c><CTRL-0x0c>
  59. 13107 33<CTRL-0x1e>
  60. 13107 3<CTRL-0x1e><CTRL-0x0c>
  61. 13107 ??3
  62. 3102 <CTRL-0x1e>33
  63. 7731 <CTRL-0x0c><CTRL-0x0c><CTRL-0x0c>
  64. 3096 <CTRL-0x06><CTRL-0x03>?
  65. 1542 <CTRL-0x06><CTRL-0x06>>
  66. 3078 <CTRL-0x18>00
  67. 12336 00><CTRL-0x0c><CTRL-0x1e>3
  68. 3084 
  69. 13118 >
  70. 13087 33<CTRL-0x1f><CTRL-0x1e>3<CTRL-0x03>3<CTRL-0x1e>
  71. 13118 33><CTRL-0x1e>3?<CTRL-0x03>>
  72. 7942 <CTRL-0x06><CTRL-0x06><CTRL-0x06>>33>0<CTRL-0x1e><CTRL-0x03><CTRL-0x03><CTRL-0x1f>3333
  73. 3086 <CTRL-0x0c><CTRL-0x0c><CTRL-0x1e>
  74. 12344 003<CTRL-0x1e><CTRL-0x03><CTRL-0x03>3<CTRL-0x1b><CTRL-0x0f><CTRL-0x1b>3
  75. 3084 <CTRL-0x0c><CTRL-0x0c><CTRL-0x1e>3??33<CTRL-0x1f>3333<CTRL-0x1e>333<CTRL-0x1e><CTRL-0x1f>33<CTRL-0x1f><CTRL-0x03><CTRL-0x03>
  76. 13107 >00
  77. 819 <CTRL-0x03><CTRL-0x03>><CTRL-0x03><CTRL-0x1e>0<CTRL-0x1f>
  78. 1567 <CTRL-0x06><CTRL-0x06><CTRL-0x1c>3333>333<CTRL-0x1e><CTRL-0x0c>33??33<CTRL-0x1e><CTRL-0x0c><CTRL-0x1e>3333>0<CTRL-0x1e>
  79. 3096 <CTRL-0x06>?
  80. 1548 <CTRL-0x0c><CTRL-0x0c>8
  81. 3084 <CTRL-0x0c><CTRL-0x0c><CTRL-0x0c><CTRL-0x0c><CTRL-0x0e><CTRL-0x18><CTRL-0x18>0<CTRL-0x18><CTRL-0x18><CTRL-0x0e>
  82. 27 
  83. 13068 <CTRL-0x0c>3
  84. 27756 lllll66666666
  85. 21845 U
  86. 10794 **
  87. 11308 ,,ll
  88. 13621 576675555?
  89. 11308 ,,|
  90. 22102 VVv6
  91. 27242 jollojjjj
  92. 22102 VV~
  93. 13621 55766vVVVVv66wUUUUw6
  94. 21845 Uw66wUUUU
  95. 27242 jjolll,,,,lllo****ol
  96. 10794 *ollo****
  97. 0  POKE 104,8: POKE 48688,240: POKE 48689,253: RUN 
  98. 1  RESTORE : REM <CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08>     <CTRL-0x0d><CTRL-0x0d>GRCK<CTRL-0x0d>LOCATIONS:<CTRL-0x0d>
  99. 2  REM <CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08>BLOAD FONT1 @ $A00
  100. 3  REM <CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08>BLOAD FONT2 @ $D00 
  101. 4  REM <CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08><CTRL-0x08>LOAD PROG. @ $E00<CTRL-0x0d>
  102. 6  PRINT  CHR$(4)"-grck.beep": PRINT  CHR$(4)"brungrck.pak,a$6000":TX$ =  CHR$(20):HM$ =  CHR$(12): DIM B$(190): DIM C(23):D$ =  CHR$(4)
  103. 7  PRINT D$"bloadgrck.pic.draw,a$6000": PRINT D$"bloadgrck.shapes,a$6200": PRINT D$"bloadgrck.quickdraw,a$300": PRINT D$"bloadgrck.blank,a$6800"
  104. 8  POKE 1014,0: POKE 1015,3: REM * SET AMPERSAND LOCATION *
  105. 9  CALL 2281: ONERR  GOTO 10070
  106. 10  HCOLOR= 7: NORMAL : GOSUB 8000
  107. 15 A$(1) = "Grotto Run":A$(2) = "Construction Kit": GOSUB 10030
  108. 16  & ,18,4,8: & ,22,30,24
  109. 20 A$(0) = "Main Menu":A$(1) = "Construction Kit":A$(2) = "File Utilities":A$(3) = "Instructions":A$(4) = "Acknowledgements":A$(5) = "Leave Construction Kit":A = 5: GOSUB 10020
  110. 30  ON X GOTO 1000,5000,7000,9000,9500
  111. 999  REM <CTRL-0x0a><CTRL-0x0a>CONSTRUCTION KIT<CTRL-0x0a><CTRL-0x0a>
  112. 1000  PRINT TX$: HOME : PRINT HM$
  113. 1001  POKE 34,21: HOME :BR = 0:P = 0:X = 0:Y = 0
  114. 1010  VTAB 21: HCOLOR= 5: GOSUB 10010: HCOLOR= 7:A$ = " Construction Kit ": GOSUB 10000
  115. 1020  GOSUB 4000
  116. 1030  PRINT HM$: HOME : PRINT "Page ";P +1;"    ";: HTAB 35: PRINT "Brush:": & ,BR,36,176
  117. 1040 A$ = "Press ? for help": GOSUB 10000
  118. 1050  GOSUB 10050
  119. 1051  IF AZ$ = ","  OR AZ$ = "<"  THEN P = P -1: GOTO 1090
  120. 1052  IF AZ$ = "."  OR AZ$ = ">"  THEN P = P +1: GOTO 1090
  121. 1053  IF AZ$ = " "  THEN 1100
  122. 1054  IF AZ$ = "B"  OR AZ$ = "b"  THEN 2000
  123. 1055  IF AZ$ = "P"  OR AZ$ = "p"  THEN 3000
  124. 1056  IF AZ$ = "/"  OR AZ$ = "?"  THEN 4500
  125. 1057  IF AZ = 8  THEN X = X -1: IF X <0  THEN X = 0:P = P -.1: GOTO 1090
  126. 1058  IF AZ = 21  THEN X = X +1: IF X >9  THEN X = 9:P = P +.1: GOTO 1090
  127. 1059  IF AZ = 11  OR AZ$ = "A"  OR AZ$ = "a"  THEN Y = Y -1: IF Y <0  THEN Y = 9
  128. 1060  IF AZ = 10  OR AZ$ = "Z"  OR AZ$ = "z"  THEN Y = Y +1: IF Y >9  THEN Y = 0
  129. 1061  IF AZ = 27  THEN 15
  130. 1062  IF AZ$ = "C"  OR AZ$ = "c"  THEN 4900
  131. 1063  IF AZ$ = "F"  OR AZ$ = "f"  THEN 1200
  132. 1064  IF AZ$ = "Q"  OR AZ$ = "q"  THEN 2100
  133. 1080  GOTO 1050
  134. 1090  IF P <0  THEN P = 0
  135. 1091  IF P >13  THEN P = 13
  136. 1092 P =  INT((P *10) +.5)/10: GOTO 1020
  137. 1099  REM <CTRL-0x0a><CTRL-0x0a>PLOT BLOCK<CTRL-0x0a><CTRL-0x0a>
  138. 1100  IF  PEEK(26624 +(P *100) +(X *10) +Y) = BR  THEN AZ = 9: GOTO 1105
  139. 1103 AZ = BR
  140. 1105  IF (X/10) +P >12.7  AND AZ = 9  THEN AZ = 23
  141. 1110  POKE 26624 +(P *100) +(X *10) +Y,AZ: GOTO 1050
  142. 1199  REM <CTRL-0x0a><CTRL-0x0a>FILL SCREEN<CTRL-0x0a><CTRL-0x0a>
  143. 1200  HOME : PRINT "This will fill the entire screen": PRINT "with the current brush.": PRINT "Do you want to do this?     ":A = 25:B = 24: GOSUB 10110
  144. 1210  IF A$ = "N"  OR A$ =  CHR$(27)  THEN  PRINT HM$: HOME : GOTO 1030
  145. 1220  FOR I = 26624 +(P *100) TO 26723 +(P *100):AZ = BR: IF (X/10) +P >12.8  AND AZ = 9  THEN AZ = 23
  146. 1230  POKE I,AZ: NEXT : PRINT HM$: HOME : GOTO 1020
  147. 1999  REM <CTRL-0x0a><CTRL-0x0a>CHANGE BLOCK TYPE<CTRL-0x0a><CTRL-0x0a>
  148. 2000  PRINT TX$: HOME : POKE 35,20: PRINT HM$: POKE 35,24: POKE 34,21: PRINT HM$:A$ = "Press letter of choice.": GOSUB 10000
  149. 2010 AZ =  -1:A = 0: FOR I = 0 TO 22: IF I/5 =  INT(I/5)  THEN A = 0:AZ = AZ +1
  150. 2011  & ,I,A *8,AZ *32:A = A +1: NEXT 
  151. 2020 AZ =  -1:A = 6: FOR I = 0 TO 22: IF I/5 =  INT(I/5)  THEN A = 6:AZ = AZ +1
  152. 2021  VTAB 1 +(AZ *4): HTAB A -1:A = A +8: IF BR = I  THEN  INVERSE 
  153. 2022  PRINT " " CHR$(I +65)" ": VTAB 2 +AZ *4: HTAB A -9: PRINT  SPC( 3): IF (AZ *4) < >0  THEN  VTAB AZ *4: HTAB A -9: PRINT  SPC( 3)
  154. 2023  NORMAL : NEXT 
  155. 2030  HOME : GET A$: IF A$ =  CHR$(27)  THEN  PRINT HM$: GOTO 1020
  156. 2033  IF A$ >"`"  AND A$ <"x"  THEN A$ =  CHR$( ASC(A$) -32)
  157. 2035  IF A$ >"@"  AND A$ <"X"  THEN BR =  ASC(A$) -65: PRINT HM$: GOTO 1020
  158. 2040  PRINT D$"beep": GOTO 2030
  159. 2099  REM QUICK BRUSH CHANGE
  160. 2100 A$ = "Quick brush - enter new brush letter": PRINT HM$: VTAB 24: GOSUB 10000
  161. 2110  GET A$: IF A$ =  CHR$(27)  THEN 1030
  162. 2120  IF A$ >"`"  AND A$ <"x"  THEN A$ =  CHR$( ASC(A$) -32)
  163. 2130  IF A$ >"@"  AND A$ <"X"  THEN BR =  ASC(A$) -65: GOTO 1030
  164. 2140  GOTO 2110
  165. 2999  REM <CTRL-0x0a><CTRL-0x0a>CHANGE PAGE #<CTRL-0x0a><CTRL-0x0a>
  166. 3000  HOME : PRINT "Page:      ":V = 22:H = 7:W = 4:A$ =  STR$(P +1): GOSUB 10040
  167. 3010 P =  VAL(A$) -1:P =  INT((P *10) +.5)/10: GOTO 1090
  168. 3999  REM <CTRL-0x0a><CTRL-0x0a>DRAW PAGE<CTRL-0x0a><CTRL-0x0a>
  169. 4000 X1 =  -4: FOR I = 26624 +(P *100) TO 26714 +(P *100)  STEP 10:X1 = X1 +4: FOR Y1 = 0 TO 9
  170. 4005  IF  PEEK(I +Y1) >22  THEN  & ,9,X1,Y1 *16: GOTO 4020
  171. 4010  & , PEEK(I +Y1),X1,Y1 *16
  172. 4020  NEXT : NEXT : RETURN 
  173. 4499  REM <CTRL-0x0a><CTRL-0x0a>HELP SCREEN<CTRL-0x0a><CTRL-0x0a>
  174. 4500  PRINT TX$: HOME : POKE 35,20: PRINT HM$: POKE 35,24: POKE 34,21: PRINT HM$: POKE 34,0: POKE 35,20
  175. 4505  HOME : PRINT : PRINT : HCOLOR= 6: GOSUB 10010:A$ = " Grotto Run Construction Kit ": GOSUB 10000: GOSUB 10010:A$ = " Command Summary ": GOSUB 10000: HCOLOR= 7: PRINT 
  176. 4510  PRINT  SPC( 5);"< and > - change pages"
  177. 4520  PRINT  SPC( 6);"Arrows - move around"
  178. 4521  PRINT  SPC( 11)"A - alternate move up"
  179. 4523  PRINT  SPC( 11)"Z - alternate move down"
  180. 4530  PRINT  SPC( 7);"Space - paint space"
  181. 4540  PRINT  SPC( 11);"B - change brush shape"
  182. 4542  PRINT  SPC( 11)"Q - Quick brush change"
  183. 4550  PRINT  SPC( 11);"C - clear entire level"
  184. 4555  PRINT  SPC( 11);"F - fill screen"
  185. 4560  PRINT  SPC( 11);"P - enter # of new page"
  186. 4570  PRINT  SPC( 11);"? - get help"
  187. 4580  PRINT  SPC( 9);"ESC - go to main menu"
  188. 4590  POKE 35,24: POKE 34,21: HOME : PRINT :A$ = "Press any key to continue.": GOSUB 10000
  189. 4591  GOSUB 10080: PRINT HM$: GOTO 1020
  190. 4899  REM <CTRL-0x0a><CTRL-0x0a>CLEAR LEVEL<CTRL-0x0a><CTRL-0x0a>
  191. 4900  PRINT HM$: HOME : PRINT "This will erase the entire level!": PRINT : PRINT "Do you want to do this?":A = 25:B = 24: GOSUB 10110: IF A$ = "N"  OR A$ =  CHR$(27)  THEN  PRINT HM$: HOME : GOTO 1030
  192. 4910  PRINT HM$:A$ = "Clearing... Please wait...": GOSUB 10000
  193. 4920  FOR I = 26624 TO 27903: POKE I,9: NEXT :P = 0:X = 0:Y = 0: FOR I = 27904 TO 28023: POKE I,23: NEXT :P = 0:X = 0:Y = 0: GOTO 1000
  194. 4999  REM <CTRL-0x0a><CTRL-0x0a>FILE UTILITIES<CTRL-0x0a><CTRL-0x0a>
  195. 5000  PRINT HM$:A$(0) = "File Utilities":A$(1) = "Load a level":A$(2) = "Save current level":A$(3) = "New Prefix/Slot, Drive":A$(4) = "Catalog":A$(5) = "Go back to Main Menu":A = 5
  196. 5003  GOSUB 10020
  197. 5004  FOR I = 0 TO 5:A$(I) = "": NEXT :A = 0
  198. 5010  ON X GOTO 5100,5200,5300,5400,15
  199. 5099  REM <CTRL-0x0a><CTRL-0x0a>LOAD A LEVEL<CTRL-0x0a><CTRL-0x0a>
  200. 5100  PRINT HM$: HOME :A$ = ""
  201. 5110 A$(0) = "Select level # to load:": FOR I = 0 TO 9:A$(I +1) =  STR$(I): NEXT :A = 10: GOSUB 10020
  202. 5120  IF I = 27  THEN 5000
  203. 5130 A$ = "G" + STR$(X -1): GOSUB 10100: IF AZ = 0  THEN 5150
  204. 5140  PRINT D$;"bload";A$;",a$6800": GOTO 5000
  205. 5150  PRINT HM$: VTAB 12: PRINT " Level ";X -1;" is not on this disk.": GOSUB 10035: GOTO 5000
  206. 5199  REM <CTRL-0x0a><CTRL-0x0a>SAVE CURRENT LEVEL<CTRL-0x0a><CTRL-0x0a>
  207. 5200  PRINT HM$: HOME 
  208. 5210 A$(0) = "Select level # to save:": FOR I = 0 TO 9:A$(I +1) =  STR$(I): NEXT :A = 10: GOSUB 10020
  209. 5220  IF I = 27  THEN 5000
  210. 5230 A$ =  STR$(X -1): PRINT D$;"bsaveg";A$;",a$6800,l1535": GOTO 5000
  211. 5299  REM <CTRL-0x0a><CTRL-0x0a>SET PREFIX, SLOT & DRIVE<CTRL-0x0a><CTRL-0x0a>
  212. 5300  PRINT HM$:A$(0) = "New Prefix/Slot/Drive":A$(1) = "Prefix":A$(2) = "Slot/Drive":A$(3) = "Go back to file menu":A = 3
  213. 5305 D = ( PEEK(48944) >127):S = ( PEEK(48944) -(128 *D))/16:D = D +1
  214. 5310  PRINT D$;"prefix": INPUT P$
  215. 5315  VTAB 20: PRINT " Slot: ";S;: HTAB 20: PRINT "Drive: ";D: PRINT " Prefix:": PRINT P$
  216. 5320  GOSUB 10020: ON X GOTO 5330,5350,5000
  217. 5330 V = 22:H = 1:W = 37:A$ = P$: GOSUB 10040: IF AZ = 27  THEN 5300
  218. 5340  ONERR  GOTO 5390
  219. 5341  PRINT D$;"prefix";A$: ONERR  GOTO 10070
  220. 5342  GOTO 5300
  221. 5350  PRINT HM$:A$(0) = "Select slot #:": FOR I = 1 TO 7:A$(I) =  STR$(I): NEXT :A = 7: GOSUB 10020
  222. 5360  IF I = 27  THEN 5300
  223. 5361 B = X
  224. 5370  PRINT HM$:A$(0) = "Select drive #:":A$(1) = "1":A$(2) = "2":A = 2: GOSUB 10020
  225. 5371  IF I = 27  THEN 5350
  226. 5372 C = X
  227. 5380  ONERR  GOTO 5390
  228. 5381  PRINT D$"prefix,s";B;",d";C: ONERR  GOTO 10070
  229. 5382  GOTO 5300
  230. 5390  POKE 220,0: POKE 221,0: POKE 222,0:A$ = "Invalid Slot/Drive": VTAB 17: PRINT D$"beep": GOSUB 10000: GOSUB 10035: ONERR  GOTO 10070
  231. 5391  PRINT D$"prefix,s";S;",d";D: GOTO 5300
  232. 5399  REM <CTRL-0x0a><CTRL-0x0a>CATALOG<CTRL-0x0a><CTRL-0x0a>
  233. 5400  PRINT HM$: HOME : PRINT "Filename"; SPC( 7);"Type  Blocks  Modified": HCOLOR= 6: GOSUB 10010: HCOLOR= 7: POKE 34,8: VTAB 22: HCOLOR= 6: GOSUB 10010: HOME 
  234. 5410  PRINT D$"prefix": INPUT P$: PRINT D$"open"P$",tdir": PRINT D$"read"P$: INPUT A$,A$,A$:AZ = 0
  235. 5420 AZ = AZ +1: INPUT A$: IF A$ = ""  THEN  GOSUB 10035: GOTO 5450
  236. 5430  IF AZ = 14  THEN Z$ = A$: GOSUB 10035: HCOLOR= 6: VTAB 22: GOSUB 10010: HOME :A$ = Z$:Z$ = "":AZ = 1: IF ZZ = 27  THEN 5450
  237. 5440  HTAB 1: VTAB AZ +8: PRINT  MID$ (A$,2,38): GOTO 5420
  238. 5450  PRINT D$"close": POKE 34,6
  239. 5460  GOTO 5000
  240. 5499  REM <CTRL-0x0a><CTRL-0x0a>CHANGE MOUSE STATUS<CTRL-0x0a><CTRL-0x0a>
  241. 5500  PRINT HM$: HOME : IF  PEEK(50188) = 32  AND  PEEK(50427) = 214  THEN 5510
  242. 5505  VTAB 12: PRINT " You don't have a mouse!": GOSUB 10035: GOTO 5000
  243. 5510 MS =   NOT (MS): IF MS = 0  THEN  GOSUB 8070
  244. 5515  IF MS = 1  THEN  GOSUB 8060
  245. 5520  HCOLOR= 6: VTAB 10: GOSUB 10010: PRINT : PRINT : PRINT : PRINT : GOSUB 10010: VTAB 12:A$ = "The mouse is now ": IF MS = 0  THEN A$ = A$ +"off."
  246. 5525  IF MS = 1  THEN A$ = A$ +"on."
  247. 5530  GOSUB 10000: PRINT : GOSUB 10010: GOSUB 10035: GOTO 5000
  248. 6999  REM <CTRL-0x0a><CTRL-0x0a>TEXT DISPLAY<CTRL-0x0a><CTRL-0x0a>
  249. 7000 A$(1) = "Construction Kit":A$(2) = "Instructions": GOSUB 10030: & ,11,4,24: & ,19,32,8: VTAB 12: PRINT " Please wait...":C = 1:B = 0:PG = 1
  250. 7001 A$ = "GRCK.INSTR": GOSUB 10100: IF AZ = 0  THEN 7007
  251. 7002  PRINT D$"open"A$: PRINT D$"read"A$
  252. 7003  INPUT B$(B): IF B$(B) = "*"  THEN  PRINT D$"close":C(C) = B: GOTO 7006
  253. 7004  IF B$(B) = "#"  THEN C(C) = B:C = C +1
  254. 7005 B = B +1: GOTO 7003
  255. 7006  POKE 32,2: POKE 33,36: GOTO 7010
  256. 7007  VTAB 12: PRINT " This is not the proper disk.": GOTO 10035
  257. 7010  VTAB 24: ROT= 3: FOR I = 1 TO 17: PRINT "#"; CHR$(34);: NEXT : PRINT "#": ROT= 0: PRINT HM$: HOME : FOR I = C(PG -1) TO C(PG):AA$ =  LEFT$(B$(I),1): IF AA$ = "@"  THEN  GOSUB 7500: GOTO 7040
  258. 7020  IF AA$ = "#"  OR AA$ = "*"  THEN 7040
  259. 7030 A$ = B$(I): GOSUB 10060
  260. 7040  NEXT 
  261. 7050  IF AA$ = "*"  THEN AZ = 1
  262. 7051  IF AA$ = "#"  THEN AZ = 0
  263. 7060  VTAB 24: HTAB 2: PRINT " pg. ";PG;" ": HTAB 13: PRINT " ESC exits. "
  264. 7061  IF PG < >1  THEN  HTAB 27: PRINT " <-- "
  265. 7062  IF AZ = 0  THEN  HTAB 31: PRINT " --> "
  266. 7070 VF = 1:HF = 1: GOSUB 10080: IF A$ =  CHR$(21)  AND AZ = 0  THEN PG = PG +1: GOTO 7010
  267. 7080  IF A$ =  CHR$(8)  AND PG < >1  THEN PG = PG -1: GOTO 7010
  268. 7090  IF A$ =  CHR$(27)  THEN  FOR I = 1 TO B:B$(I) = "": NEXT : FOR I = 1 TO C:C(I) = 0: NEXT :B = 0:C = 0:AA$ = "":PG = 0: GOTO 15
  269. 7100  PRINT D$"beep": GOTO 7070
  270. 7499  REM <CTRL-0x0a><CTRL-0x0a>TEXT COMMANDS<CTRL-0x0a><CTRL-0x0a>
  271. 7500 BB$ =  MID$ (B$(I),2,1)
  272. 7510  IF BB$ = "^"  THEN A$ =  RIGHT$(B$(I), LEN(B$(I)) -2): GOSUB 10000
  273. 7520  IF BB$ >"/"  AND BB$ <":"  THEN  HCOLOR=  VAL(BB$): GOSUB 10010: HCOLOR= 7: IF  LEN(B$(I)) >2  THEN A$ = " " + RIGHT$(B$(I), LEN(B$(I)) -2) +" ": GOSUB 10000
  274. 7530  IF BB$ >"/"  AND BB$ <":"  AND  LEN(B$(I)) = 2  THEN  PRINT 
  275. 7540  RETURN 
  276. 7999  REM <CTRL-0x0a><CTRL-0x0a>MOUSE?<CTRL-0x0a><CTRL-0x0a>
  277. 8000 MS = 0: RETURN 
  278. 8999  REM <CTRL-0x0a><CTRL-0x0a>ACKNOWLEDGEMENTS<CTRL-0x0a><CTRL-0x0a>
  279. 9000  PRINT HM$: HCOLOR= 6: GOSUB 10010: HCOLOR= 7:A$ = " Acknowledgements ": GOSUB 10000: PRINT 
  280. 9010 A$ = "GR Construction Kit by": GOSUB 10000:A$ = "Eddy Marshall": GOSUB 10000: PRINT 
  281. 9020 A$ = "Original Grotto Run game by": GOSUB 10000:A$ = "Peter Rokitski": GOSUB 10000: PRINT 
  282. 9025 A$ = "Shape table adapted from": GOSUB 10000:A$ = "original Grotto Run graphics": GOSUB 10000: PRINT 
  283. 9030 A$ = "ProDOS `BEEP' command by": GOSUB 10000:A$ = "Bill Tudor": GOSUB 10000
  284. 9040  PRINT : HCOLOR= 6: GOSUB 10010: GOSUB 10035
  285. 9050  PRINT : GOSUB 10010: HCOLOR= 7:A$ = " Acknowledgements ": GOSUB 10000: PRINT 
  286. 9070 A$ = "Grotto Run Construction Kit": GOSUB 10000
  287. 9071 A$ = "by Eddy Marshall": GOSUB 10000: PRINT 
  288. 9072 A$ = "Copyright (c) 1991 Softdisk, Inc.": GOSUB 10000
  289. 9073 A$ = "All Rights Reserved": GOSUB 10000
  290. 9074 A$ = "Published on Softdisk 121": GOSUB 10000
  291. 9075 A$ = "Subscriptions: 1-800-831-2694": GOSUB 10000
  292. 9076 A$ = "Changing this notice is illegal": GOSUB 10000
  293. 9080  PRINT : HCOLOR= 6: GOSUB 10010
  294. 9090  GOSUB 10035: GOTO 20
  295. 9499  REM <CTRL-0x0a><CTRL-0x0a>THAT'S ALL, FOLKS!<CTRL-0x0a><CTRL-0x0a>
  296. 9500  PRINT HM$: VTAB 10: HCOLOR= 6: GOSUB 10010: PRINT : PRINT : PRINT " Really quit?": PRINT : GOSUB 10010:A = 15:B = 12: GOSUB 10110
  297. 9510  IF A$ =  CHR$(27)  OR A$ = "N"  THEN  PRINT HM$: GOTO 20
  298. 9520  POKE 104,8: GOTO 150
  299. 9999  REM <CTRL-0x0a><CTRL-0x0a>CENTER A$<CTRL-0x0a><CTRL-0x0a>
  300. 10000  HTAB ( PEEK(33) +2 - LEN(A$))/2: PRINT A$: RETURN 
  301. 10004  REM <CTRL-0x0a><CTRL-0x0a>DRAW BORDER<CTRL-0x0a><CTRL-0x0a>
  302. 10005  PRINT TX$: HOME : ROT= 3: PRINT "$";: FOR Z = 2 TO 38  STEP 2: PRINT  CHR$(162);"#";: NEXT : PRINT "%";: FOR Z = 2 TO 23: PRINT " ";: HTAB 40: PRINT "!";: NEXT : PRINT "'";: FOR Z = 2 TO 38  STEP 2: PRINT  CHR$(162);"#";: NEXT : PRINT "&": ROT= 0
  303. 10006  POKE 32,1: POKE 33,38: POKE 34,1: POKE 35,23: PRINT HM$: HOME : RETURN 
  304. 10009  REM <CTRL-0x0a><CTRL-0x0a>COLOR LINE<CTRL-0x0a><CTRL-0x0a>
  305. 10010 AZ =  PEEK(37) *8:ZA =  PEEK(32) *7: HPLOT ZA +1,AZ +3 TO ZA +( PEEK(33) *7 -1),AZ +3 TO ZA +( PEEK(33) *7 -1),AZ +4 TO ZA +1,AZ +4:AZ = 0:ZA = 0: RETURN 
  306. 10019  REM <CTRL-0x0a><CTRL-0x0a>MENU MAKER<CTRL-0x0a><CTRL-0x0a>
  307. 10020  HOME : PRINT :A$ = " " +A$(0) +" ": HCOLOR= (2 *(A$ < >"  ")) +4: GOSUB 10010: GOSUB 10000: HCOLOR= 6: PRINT : FOR I = 1 TO A:A$ = A$(I): GOSUB 10000: NEXT : PRINT : GOSUB 10010: HCOLOR= 7: HOME : PRINT : PRINT : PRINT :A$ = "":X = 1:AZ =  PEEK(37)
  308. 10021  VTAB AZ +X:A$ = " " +A$(X) +" ": INVERSE : GOSUB 10000: NORMAL :X$ = A$
  309. 10022 HF = 1: GOSUB 10080:I =  ASC(A$):A$ = X$: VTAB AZ +X: GOSUB 10000
  310. 10023  IF I = 10  OR I = 21  THEN X = X +1: IF X >(A)  THEN X = 1: GOTO 10021
  311. 10024  IF I = 8  OR I = 11  THEN X = X -1: IF X <1  THEN X = A: GOTO 10021
  312. 10025  IF I = 27  THEN X = A: RETURN 
  313. 10026  FOR ZA = 1 TO A: IF  LEFT$(A$(ZA),1) =  CHR$(I)  THEN X = ZA:I = 13:ZA = A
  314. 10027  NEXT : IF I = 13  THEN  RETURN 
  315. 10028  GOTO 10021
  316. 10029  REM <CTRL-0x0a><CTRL-0x0a>DRAW TITLE<CTRL-0x0a><CTRL-0x0a>
  317. 10030  GOSUB 10005: PRINT TX$: HOME : VTAB 3: FOR I = 2 TO 34  STEP 4: & ,17,I,24: NEXT :A$ = A$(1): GOSUB 10000:A$ = A$(2): GOSUB 10000: ROT= 3: PRINT 
  318. 10031  PRINT "2";: FOR I = 2 TO 38  STEP 2: PRINT  CHR$(162);"#";: NEXT : PRINT ",": ROT= 0: POKE 32,1: POKE 33,38: POKE 34,6: POKE 35,23: HOME : RETURN 
  319. 10034  REM <CTRL-0x0a><CTRL-0x0a>"PRESS ANY KEY."<CTRL-0x0a><CTRL-0x0a>
  320. 10035  VTAB 23:A$ = "(": FOR AZ = 1 TO 8:A$ = A$ +"#" + CHR$(162): NEXT :A$ = A$ +")": ROT= 3: GOSUB 10000
  321. 10036  VTAB 24:A$ = "&????????????????'": GOSUB 10000: ROT= 0:A$ = "Press any key.": GOSUB 10000:HF = 1:VF = 1: GOSUB 10080:ZZ =  ASC(A$)
  322. 10037 A$ = "                  ": VTAB 23: GOSUB 10000:A$ = "": FOR AZ = 1 TO 9:A$ = A$ + CHR$(162) +"#": NEXT : ROT= 3: VTAB 24: GOSUB 10000: ROT= 0: PRINT HM$: HOME : RETURN 
  323. 10039  REM <CTRL-0x0a><CTRL-0x0a>PRODOS INPUT<CTRL-0x0a><CTRL-0x0a>
  324. 10040  VTAB V: HTAB H: PRINT A$;:BS$ =  CHR$(8)
  325. 10041  PRINT "_";BS$;: GET AZ$:AZ =  ASC(AZ$): IF   NOT ((AZ$ >"/"  AND AZ$ <":")  OR (AZ$ >"@"  AND AZ$ <"[")  OR (AZ$ >"`"  AND AZ$ <"{")  OR AZ$ = "/"  OR AZ$ = "."  OR AZ$ = ""  OR AZ = 8  OR AZ = 13  OR AZ = 27)  THEN 10041
  326. 10042  IF AZ = 27  OR AZ = 13  THEN  VTAB V: PRINT " ";BS$;: VTAB V:ZZ = 0: RETURN 
  327. 10043  IF (AZ$ = ""  OR AZ = 8)  AND  LEN(A$) = 1  THEN A$ = "": PRINT BS$;"  ";BS$;BS$;: VTAB V: GOTO 10041
  328. 10044  IF (AZ$ = ""  OR AZ = 8)  AND  LEN(A$) >1  THEN A$ =  LEFT$(A$, LEN(A$) -1): PRINT BS$;"  ";BS$;BS$;: VTAB V: GOTO 10041
  329. 10045  IF AZ$ =  >" "  AND  LEN(A$) <W  AND AZ$ <""  THEN A$ = A$ +AZ$: PRINT AZ$;: VTAB V: GOTO 10041
  330. 10046  PRINT D$"beep": VTAB V: GOTO 10041
  331. 10049  REM <CTRL-0x0a><CTRL-0x0a>GRCK INPUT<CTRL-0x0a><CTRL-0x0a>
  332. 10050 AZ =  PEEK(26624 +(P *100) +(X *10) +Y):AZ = ((AZ >22) *9) +((AZ <23) *AZ)
  333. 10051  SPEED= 252: INVERSE : HTAB (X *4) +1: VTAB (Y *2) +1: PRINT "    ": HTAB (X *4) +1: VTAB (Y *2) +2: PRINT "    ": NORMAL : SPEED= 255: & ,AZ,X *4,Y *16: GOSUB 10053: IF A <128  THEN 10051
  334. 10052 AZ = A -128:AZ$ =  CHR$(AZ): POKE 49168,0:A = 0: RETURN 
  335. 10053  IF MS < >1  THEN A =  PEEK( -16384): RETURN 
  336. 10054  PRINT D$"IN#4": INPUT "";H1,V1,CL
  337. 10055  INPUT "";H,V,CL: IF CL <0  THEN A =  PEEK( -16384): GOTO 10058
  338. 10056  IF CL = 1  OR CL = 2  THEN A = 160: GOTO 10058
  339. 10057  GOSUB 10090: GOSUB 10094: IF FL = 1  THEN A =  ASC(A$) +128
  340. 10058 FL = 0: PRINT D$"IN#0": RETURN 
  341. 10059  REM <CTRL-0x0a><CTRL-0x0a>WRAP-AROUND<CTRL-0x0a><CTRL-0x0a>
  342. 10060 AZ =  PEEK(33) +1: IF  LEN(A$) <AZ -1  THEN  PRINT A$: RETURN 
  343. 10061  IF  LEN(A$) = AZ -1  THEN  PRINT A$;: RETURN 
  344. 10062  FOR ZA = AZ TO 1  STEP  -1:AZ$ =  MID$ (A$,ZA,1): IF AZ$ = " "  AND  LEN( LEFT$(A$,ZA -(AZ$ = " "))) = AZ -1  THEN  PRINT  LEFT$(A$,ZA -(AZ$ = " "));: GOTO 10065
  345. 10063  IF AZ$ = " "  THEN  PRINT  LEFT$(A$,ZA -(AZ$ = " ")): GOTO 10065
  346. 10064  NEXT : PRINT "This variable is too long.": RETURN 
  347. 10065 A$ =  RIGHT$(A$, LEN(A$) -ZA): GOTO 10060
  348. 10069  REM <CTRL-0x0a><CTRL-0x0a>ERROR HANDLER<CTRL-0x0a><CTRL-0x0a>
  349. 10070 A =  PEEK(222):B = ( PEEK(219) *256) + PEEK(218): POKE 220,0: POKE 221,0: POKE 222,0: SPEED= 255: NORMAL : GOSUB 10005: VTAB 12: PRINT D$"close"
  350. 10071  IF A = 255  THEN  PRINT " Why'd you press Control-C?"
  351. 10072  IF A = 6  THEN  PRINT " I can't find a file."
  352. 10073  IF A < >3  AND A < >255  THEN  PRINT "Error #"A" has occurred in line #"B"."
  353. 10074  GOSUB 10035: GOTO 15
  354. 10079  REM <CTRL-0x0a><CTRL-0x0a>READ KEYS/MOUSE MOVE+CLICK<CTRL-0x0a><CTRL-0x0a>
  355. 10080 :
  356. 10081  IF  PEEK( -16384) <128  THEN 10081
  357. 10082 A$ =  CHR$( PEEK( -16384) -128): POKE  -16368,0
  358. 10083  IF A$ <"{"  AND A$ >"`"  THEN A$ =  CHR$( ASC(A$) -32)
  359. 10084  RETURN 
  360. 10099  REM <CTRL-0x0a><CTRL-0x0a>NO-ERROR VERIFY<CTRL-0x0a><CTRL-0x0a>
  361. 10100  IF  LEN(A$) < >15  THEN  FOR AZ = 1 TO 15 - LEN(A$):A$ = A$ +" ": NEXT 
  362. 10101 AZ = 0: PRINT D$"prefix": INPUT P$: PRINT D$"open"P$",tdir": PRINT D$"read"P$: INPUT AZ$,AZ$,AZ$
  363. 10102  INPUT AZ$:AZ$ =  MID$ (AZ$,2,15): IF AZ$ = ""  THEN 10105
  364. 10103  IF AZ$ = A$  THEN AZ = 1: GOTO 10105
  365. 10104  GOTO 10102
  366. 10105  PRINT D$"close": RETURN 
  367. 10109  REM <CTRL-0x0a><CTRL-0x0a>"Y/N" INPUT<CTRL-0x0a><CTRL-0x0a>
  368. 10110 Z$ = "N": IF YN = 1  THEN Z$ = "Y":YN = 0
  369. 10111  VTAB B: HTAB A: INVERSE : PRINT " "Z$" ":VF = 1:HF = 1: GOSUB 10080: IF  ASC(A$) >96  AND  ASC(A$) <123  THEN A$ =  CHR$( ASC(A$) -32)
  370. 10112  IF A$ =  CHR$(13)  THEN A$ = Z$: VTAB B: HTAB A: NORMAL : PRINT A$: RETURN 
  371. 10113  IF A$ = "Y"  OR A$ = "N"  THEN Z$ = A$: GOTO 10111
  372. 10114  IF A$ =  CHR$(27)  THEN  NORMAL : RETURN 
  373. 10115  PRINT D$"beep": GOTO 10111